package webhook

import (
	"encoding/json"
	"fmt"
	"strings"
	"text/template"
)

// 常量定义
const (
	WebhookTemplateName = "WebhookTemplate"
	WebhookFailureMsg   = "模板渲染失败"
)

// JsonDataToTemplate 将JSON数据渲染到模板中
// @param jsonData JSON格式的字符串数据
// @param temptext 模板文本
// @return 渲染后的字符串结果，如果出错则返回错误信息
func JsonDataToTemplate(jsonData, temptext string) string {
	if jsonData == "" || temptext == "" {
		return WebhookFailureMsg
	}

	// 解析JSON数据到map
	var data map[string]interface{}
	if err := json.Unmarshal([]byte(jsonData), &data); err != nil {
		return fmt.Sprintf("JSON解析错误: %v", err)
	}

	// 创建并解析模板
	tmpl, err := template.New(WebhookTemplateName).Parse(temptext)
	if err != nil {
		return fmt.Sprintf("模板解析错误: %v", err)
	}

	// 执行模板渲染
	var result strings.Builder
	if err := tmpl.Execute(&result, data); err != nil {
		return fmt.Sprintf("模板渲染错误: %v", err)
	}

	return result.String()
}
